import { setToken, getToken, removeToken } from '@/utils/auth'
import { login, getUserInfoApi, getUserDetailById } from '@/api/user'
export default {
  // 开启命名空间
  namespaced: true,
  state: {
    token: getToken() || null,
    userInfo: {},
    mobile: '' // 用户填写的手机号 优化多人同时登录问题
  },
  mutations: {
    setToken(state, newToken) {
      //   actions传过来的token赋值给state的token
      state.token = newToken
      //   保存token到本地
      setToken(newToken)
    },
    setUserInfo(state, newUserInfo) {
      //   actions传过来的userInfo赋值给state的userInfo
      state.userInfo = newUserInfo
    },
    removeState(state) {
      // 清除vuex的token
      state.token = null
      // 清除vuex的userInfo
      state.userInfo = null
      // 清空本地token
      removeToken()
    }
  },
  actions: {
    async userLogin(context, obj) {
      // 调用接口获取数据
      const res = await login(obj)
      //   调用mutations方法修改state的token数据
      context.commit('setToken', res.data)
    },
    //   获取用户信息接口
    async getUserInfo(context) {
      //   调接口获取用户信息
      const res = await getUserInfoApi()
      // 调接口获取用户头像 传入用户id
      const photo = await getUserDetailById(res.data.userId)
      //   console.log(photo)
      //   console.log(res)
      // 合并数据 提交给userInfo
      context.commit('setUserInfo', { ...res.data, ...photo.data })
    },
    async logout(context) {
      // 调用mutations里方法清除本地token和vuex数据
      await context.commit('removeState')
    }
  }
}
